One or more aspects relate, in general, to locking a cache line and, in particular, to a hardware control of a next instruction access intent instruction.
In a multiprocessing computing environment, multiple processing units, such as central processing units (CPUs) or cores, are connected to share access to common storage, such as common main storage locations. The storage hierarchy across the configuration may include various cache levels private or local to each processing unit, various cache levels shared among several processing units, and main storage. When a processing unit is to update a storage location, a line of storage is transferred to the processing unit by the storage hierarchy, and the line is held exclusively within a cache level that is private to the processing unit performing the update. While a line of storage is held exclusively by a processing unit, other processing units are not permitted to update or read that line of storage, until after the line is released and no longer held exclusively by the processing unit.
Where several computer processes share access to an area of main storage, a semaphore (or lock) may be used to control access to that area of storage. The semaphore is typically a word or double word in main storage and the semaphore contents dictate which processing unit within the configuration currently is permitted access to the corresponding area of storage. When a process executing on a processing unit requires access to the storage area, that process updates the semaphore to indicate the shared area is in use, completes tasks that access the shared area, and then updates the semaphore again to indicate that the shared area is no longer in use.
While the above process works well in most instances, in some cases, a process or processor that has access can hang and not be able to release the line. In other cases, the processor that has the lock may release it but then reacquire it before a competing processor has a chance to request a lock.